<?php
namespace app\api\controller\v1;
use app\api\model\Banner as BannerModel;
use app\exception\BannerMissException;
use app\validate\api\IDMustBePositiveInt;
use think\annotation\Route;
use think\Exception;


class Banner
{

    /**
     *
     * 获取指定id的banner信息
     *
     * @param $id /banner的id号
     *
     *
     * @Route("v1/banner/:id",method="GET",https=0)
     * @return mixed
     * @throws BannerMissException|Exception
     */
    public function getBanner($id)
    {

        $data = [
            'id'=>$id
        ];
        //独立验证
//        $validate = new Validate();
//        $validate->rule([
//            'name'=>'require|max:10',
//            'email'=>'email'
//        ]);
//        $validate->message([
//           'name.max'=>'1'
//        ]);
//        $result = $validate->batch()->check($data);
//        var_dump($validate->getError());
        //验证器验证
//        try{
//            validate(\app\validate\api\Banner::class)->batch()->check($data);
//        }catch (ValidateException $e){
//            //验证失败
//            dump($e->getError());
//        }
//        try{
//            $result = validate(IDMustBePositiveInt::class)->batch()->check($data);
//            var_dump($result);
//        }catch (ValidateException $e){
//            dump($e->getError());
//        }

        // 验证层
        (new IDMustBePositiveInt())->goCheck();

        //以前验证异常的垃圾写法
//        try{
//            $banner =  BannerModel::getBannerByID($id);
//        }catch (Exception $ex){
//            $err = [
//                'error_code'=>10001,
//                'msg'=>$ex->getMessage()
//            ];
//            return json($err,400);
//        }
        $banner = BannerModel::getBannerByID($id);
        //异常处理层
        if($banner==null){
            throw new Exception();
        }
        return json($banner);
    }


}